import { message } from "antd";
import axios from "axios";
import qs from "querystring";
import NProgress from "nprogress";
import "nprogress/nprogress.css";

const instance = axios.create(
    {
        baseURL: "http://localhost:3000",
        timeout: 3000
    }
)

//请求拦截器，比如在此判断是什么请求，如果是post请求，则用querystring库处理一下请求参数
instance.interceptors.request.use(config => {
    NProgress.start();
    if (config.method.toUpperCase() === "POST" && config.data instanceof Object) {
        config.data = qs.stringify(config.data);
    }
    return config;
});

//响应拦截器，可以将服务器返回的内容，在此进一步加工
instance.interceptors.response.use(resp => {
    NProgress.done();
    let { status, data, statusText } = resp;
    //服务器返回成功
    if (status === 200) {
        //data中的状态为0表示服务器验证后成功，会返回正常对象
        if (data.status === 0) {
            return data.data;
        } else {
            //data中的状态不为0，服务器验证不通过，会返回信息
            message.error(data.msg, 1);
            return new Promise(() => { });
        }
    } else {
        //服务器返回失败
        message.error(`错误信息:${status}:${statusText}`, 1);
        return new Promise(() => { });
    }
}, error => {
    NProgress.done();
    //响应失败,一般这里不用把error打印给客户看，然后将响应失败后的处理放在此处
    message.error("网络错误", 1);
    console.log("error==》", error);
    return new Promise(() => { });
});

export default instance;